/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package conn.dao;

import java.sql.Statement;
import conn.bean.BAbonado;
import conn.bean.BDepartamento;
import conn.bean.BDireccion;
import conn.bean.BDistrito;
import conn.bean.BLinea;
import conn.bean.BProvincia;
import conn.bean.BTipoLinea;

//import com.nw.entity.Employee;

import java.util.ArrayList;
import java.util.List;
//import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DLinea extends DBase
{

public List getmodlineas()
    {
        List Lista = new ArrayList();
        Statement stmt = null;
        ResultSet res = null;

        BDireccion bdireccion = null;
        BDistrito bdistrito = null;
        BProvincia bprovincia = null;
        BDepartamento bdepartamento = null;
        BAbonado babonado = null;
        BLinea blinea = null;
        BTipoLinea btipolinea = null;
/*
        Product bproducts = null;
        Category bcategory = null;
        Supplier bsupplier = null;*/

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery(

             "select l.idLinea,l.numero, dep.descripcion, prv.descripcion, dst.descripcion, dir.descripcion, tp.nombre " +
             "from linea l, departamento dep, tipolinea tp, distrito dst, direccion dir, provincia prv, abonado ab " +
             "where dir.idDireccion = ab.idDireccion and dir.idDistrito = dst.idDistrito and dst.idProvincia = prv.idProvincia and " +
             "prv.idDepartamento = dep.idDepartamento and l.idabonado = ab.idAbonado and l.tipolinea = tp.idTipoLinea; "
             );

            while (res.next()) {

                bdepartamento = new BDepartamento(0 , res.getString(3));
                /*public BDepartamento(int variddepartamento, String vardescripcion)*/
                bprovincia = new BProvincia(0, res.getString(4),bdepartamento);
                /*public BProvincia(int varidprovincia, String vardescripcion, BDepartamento vardepartamento)*/
                bdistrito = new BDistrito(0,res.getString(5),bprovincia);
                /*public BDistrito(int variddistrito, String vardescripcion, BProvincia varprovincia)*/
                bdireccion = new BDireccion(0,res.getString(6), bdistrito);
                /*public BDireccion(int variddireccion, String vardescripcion, BDistrito vardistrito)*/
                babonado = new BAbonado(0,null,null,null,null,null,null,bdireccion,null);
                /*public BAbonado (int varidabonado, String varnombre, String varapellidop, String varapellidom, String varsexo, String varestcivil,
                 String varfechnac, BDireccion vardireccion)*/
                btipolinea = new BTipoLinea(0,res.getString(7));
                /*public BTipoLinea(int varidTipoLinea, String varnombre)*/
                blinea = new BLinea(res.getInt(1),res.getString(2),btipolinea,babonado,"");
                /*public BLinea(int varidlinea, String varnum, BTipoLinea vartipolinea, BAbonado varabonado)*/

                Lista.add(blinea);

            }

            res.close();
            stmt.close();
            conn.close();

        }catch(SQLException ex){
           System.out.println("SqlException : "+ex.toString());
        }catch(Exception ex){
           System.out.println("Exception : "+ex.toString());
        }finally {
            if (res != null) {
              try { res.close(); } catch (SQLException e) { ; }
              res = null;
            }
            if (stmt != null) {
              try { stmt.close(); } catch (SQLException e) { ; }
              stmt = null;
            }
            if (conn != null) {
              try { conn.close(); } catch (SQLException e) { ; }
              conn = null;
            }
        }
        return Lista;
    }

    public List getLineasxCampana(int idCampana) {
        List Lista = new ArrayList();
        Statement stmt = null;
        ResultSet res = null;

        BDireccion bdireccion = null;
        BDistrito bdistrito = null;
        BProvincia bprovincia = null;
        BDepartamento bdepartamento = null;
        BAbonado babonado = null;
        BLinea blinea = null;
        BTipoLinea btipolinea = null;
/*
        Product bproducts = null;
        Category bcategory = null;
        Supplier bsupplier = null;*/

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery(

             "select l.idLinea,l.numero, dep.descripcion, prv.descripcion, dst.descripcion, dir.descripcion, tp.nombre " +
             "from linea l, departamento dep, tipolinea tp, distrito dst, direccion dir, provincia prv, abonado ab, lineaxcampana ll " +
             "where dir.idDireccion = ab.idDireccion and dir.idDistrito = dst.idDistrito and dst.idProvincia = prv.idProvincia and " +
             "prv.idDepartamento = dep.idDepartamento and l.idabonado = ab.idAbonado and l.tipolinea = tp.idTipoLinea and ll.idLinea=l.idLinea and  ll.idCampana="+idCampana+"; "
             );

            while (res.next()) {

                bdepartamento = new BDepartamento(0 , res.getString(3));
                /*public BDepartamento(int variddepartamento, String vardescripcion)*/
                bprovincia = new BProvincia(0, res.getString(4),bdepartamento);
                /*public BProvincia(int varidprovincia, String vardescripcion, BDepartamento vardepartamento)*/
                bdistrito = new BDistrito(0,res.getString(5),bprovincia);
                /*public BDistrito(int variddistrito, String vardescripcion, BProvincia varprovincia)*/
                bdireccion = new BDireccion(0,res.getString(6), bdistrito);
                /*public BDireccion(int variddireccion, String vardescripcion, BDistrito vardistrito)*/
                babonado = new BAbonado(0,null,null,null,null,null,null,bdireccion,null);
                /*public BAbonado (int varidabonado, String varnombre, String varapellidop, String varapellidom, String varsexo, String varestcivil,
                 String varfechnac, BDireccion vardireccion)*/
                btipolinea = new BTipoLinea(0,res.getString(7));
                /*public BTipoLinea(int varidTipoLinea, String varnombre)*/
                blinea = new BLinea(res.getInt(1),res.getString(2),btipolinea,babonado,"");
                /*public BLinea(int varidlinea, String varnum, BTipoLinea vartipolinea, BAbonado varabonado)*/

                Lista.add(blinea);

            }

            res.close();
            stmt.close();
            conn.close();

        }catch(SQLException ex){
           System.out.println("SqlException : "+ex.toString());
        }catch(Exception ex){
           System.out.println("Exception : "+ex.toString());
        }finally {
            if (res != null) {
              try { res.close(); } catch (SQLException e) { ; }
              res = null;
            }
            if (stmt != null) {
              try { stmt.close(); } catch (SQLException e) { ; }
              stmt = null;
            }
            if (conn != null) {
              try { conn.close(); } catch (SQLException e) { ; }
              conn = null;
            }
        }
        return Lista;
    }
    public void crearLinea(String numero,int tipoLinea, int idAbonado) {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            stmt.executeUpdate(""
                    + " INSERT INTO linea "
                    + " (numero, tipoLinea,idAbonado)"
                    + " VALUES "
                    + " ('"+numero+"',"+tipoLinea+","+idAbonado+");");

            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
    }

    public int getUltimoId() {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT MAX(idLinea) from linea");

            if (res.next()) {

                id = res.getInt(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return id;
    }

    public boolean existeLineaxCampana(int idLinea,int idCampana) {
        boolean existe=false;
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT * from lineaxcampana where idCampana="+idCampana+" and idLinea="+ idLinea+";");

            if (res.next()) {
                existe=true;
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return existe;
    }

    public int getnextlinea() {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("SELECT MAX(numero) from linea");

            if (res.next()) {

                id = res.getInt(1);
                id=id+1;
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return id;
    }

    public int getidlinea(String idabonado) {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos
        int id = 0;
        try {

            stmt = conn.createStatement();
            res = stmt.executeQuery("select idLinea from linea where idAbonado ='"+idabonado+"';");

            if (res.next()) {

                id = res.getInt(1);
            }

            res.close();
            stmt.close();
            conn.close();

        } catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
        return id;
    }
    public void desactivarLinea(String idabonado, int idlinea) {
        Statement stmt = null;
        ResultSet res = null;

        this.init_mysql();  // se inicia la conección a la base de datos

        try {

            stmt = conn.createStatement();
            String query = "update abonado set livecondition='inactivo' where idAbonado='"+idabonado+"';";
            stmt.executeUpdate(query);

            query = "update linea set livecondition='inactivo' where idLinea='"+idlinea+"';";
            stmt.executeUpdate(query);

            stmt.close();
            conn.close();

        }catch (SQLException ex) {
            System.out.println("SqlException : " + ex.toString());
        } catch (Exception ex) {
            System.out.println("Exception : " + ex.toString());
        } finally {
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    ;
                }
                res = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    ;
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    ;
                }
                conn = null;
            }
        }
    }

}
